//
//  BaseModle.cpp
//  demo
//
//  Created by vonchenchen on 2021/3/19.
//  Copyright © 2021 vonchenchen. All rights reserved.
//

#include <stdio.h>
#include "BaseModle.h"

using namespace ToyCube;
std::unique_ptr<ToyTexture> CUBE_COLOR_TEX[6];

void LoadBaseCube(VertexAttrib **mesh){
    *mesh = new VertexAttrib[8];
    for(int i=0; i<8; i++){
        (*mesh)[i] = CUBE_MODLE[i];
    }
}

void ReleaseBaseCube(VertexAttrib *mesh){
    if(mesh){
        delete[] mesh;
    }
}

void InitCubeColorTexture(){
    
    CUBE_COLOR_TEX[TEX_COLOR_BLUE] = std::make_unique<ToyTexture>(32, 32);
    for(int i=0; i<32; i++){
        for(int j=0; j<32; j++){
            CUBE_COLOR_TEX[TEX_COLOR_BLUE]->SetPixel(i, j, 0xff5f0000);
        }
    }
    CUBE_COLOR_TEX[TEX_COLOR_BLUE]->SetName("CUBE_BLUE");
    
    CUBE_COLOR_TEX[TEX_COLOR_GREEN] = std::make_unique<ToyTexture>(32, 32);
    for(int i=0; i<32; i++){
        for(int j=0; j<32; j++){
            CUBE_COLOR_TEX[TEX_COLOR_GREEN]->SetPixel(i, j, 0xff005f00);
        }
    }
    CUBE_COLOR_TEX[TEX_COLOR_GREEN]->SetName("CUBE_GREEN");
    
    CUBE_COLOR_TEX[TEX_COLOR_RED] = std::make_unique<ToyTexture>(32, 32);
    for(int i=0; i<32; i++){
        for(int j=0; j<32; j++){
            CUBE_COLOR_TEX[TEX_COLOR_RED]->SetPixel(i, j, 0xff000077);
        }
    }
    CUBE_COLOR_TEX[TEX_COLOR_RED]->SetName("CUBE_RED");
    
    CUBE_COLOR_TEX[TEX_COLOR_WHITE] = std::make_unique<ToyTexture>(32, 32);
    for(int i=0; i<32; i++){
        for(int j=0; j<32; j++){
            CUBE_COLOR_TEX[TEX_COLOR_WHITE]->SetPixel(i, j, 0xff5f5f5f);
        }
    }
    CUBE_COLOR_TEX[TEX_COLOR_WHITE]->SetName("CUBE_WHITE");
    
    CUBE_COLOR_TEX[TEX_COLOR_YELLOW] = std::make_unique<ToyTexture>(32, 32);
    for(int i=0; i<32; i++){
        for(int j=0; j<32; j++){
            CUBE_COLOR_TEX[TEX_COLOR_YELLOW]->SetPixel(i, j, 0xff00aaaa);
        }
    }
    CUBE_COLOR_TEX[TEX_COLOR_YELLOW]->SetName("CUBE_YELLOW");
    
    CUBE_COLOR_TEX[TEX_COLOR_ORANGE] = std::make_unique<ToyTexture>(32, 32);
    for(int i=0; i<32; i++){
        for(int j=0; j<32; j++){
            CUBE_COLOR_TEX[TEX_COLOR_ORANGE]->SetPixel(i, j, 0xff3399dd);
        }
    }
    CUBE_COLOR_TEX[TEX_COLOR_ORANGE]->SetName("CUBE_ORANGE");
}

ToyTexture *GetCubeColorTexture(const int color){
    return CUBE_COLOR_TEX[color].get();
}
